
package controller;

import java.sql.Timestamp;
import java.util.Date;
import javax.swing.JOptionPane;
import model.Filme;
import model.Sala;
import model.Sessao;
import model.SessoesModel;
import view.SessaoView;

/**
 * @author Lucas Amaral
 */
public class SessaoController {
    private SessaoView view;
    private SessoesModel model;
    
    public SessaoController(SessaoView v, SessoesModel m) {
        view = v;
        model = m;
    }
    
    public void inserirSessao(Date data, String hora, String minutos, String filme, String ingressos, String numeroSala) {
        Timestamp dataHora = new Timestamp(data.getTime());
        dataHora.setHours(Integer.valueOf(hora));
        dataHora.setMinutes(Integer.valueOf(minutos));
        Sessao sessão = new Sessao();
        sessão.setData(dataHora);
        sessão.setFilme(buscarFilme(filme));
        sessão.setQtdIngressosVendidos(Integer.valueOf(ingressos));
        sessão.setSala(buscarSala(Integer.valueOf(numeroSala)));
        model.inserirSessão(sessão);
    }
    
    public void alterarSessao(Sessao sessão, Date data, String hora, String minutos, String filme, String ingressos, String numeroSala) {
        Timestamp dataHora = new Timestamp(data.getTime());
        dataHora.setHours(Integer.valueOf(hora));
        dataHora.setMinutes(Integer.valueOf(minutos));
        sessão.setData(dataHora);
        sessão.setFilme(buscarFilme(filme));
        sessão.setQtdIngressosVendidos(Integer.valueOf(ingressos));
        sessão.setSala(buscarSala(Integer.valueOf(numeroSala)));
        model.alterarSessão(sessão);
        JOptionPane.showMessageDialog(view, "Sessão alterada com sucesso.");
    }
    
    public Sala buscarSala(Integer numeroSala) {
        for (Sala sala: model.getSalas().values()) {
            if (sala.getNumero() == (numeroSala)) {
                return sala;
            }
        }
        return null;
    }
    
    public Filme buscarFilme(String nomeFilme) {
        for (Filme filme: model.getFilmes().values()) {
            if (filme.getNome().equals(nomeFilme)) {
                return filme;
            }
        }
        return null;
    }
    
    public void listarSalas() {
        for (Sala sala: model.getSalas().values()) {
            view.jComboBoxSala.addItem(sala.getNumero());
        }
    }
    
    public void listarFilmes(Boolean emCartaz) {
        for (Filme filme: model.getFilmes().values()) {
            if (emCartaz == false || emCartaz == true && filme.getEmCartaz()) {
                view.jComboBoxFilme.addItem(filme.getNome());
            }
        }
    }
    
    public void quantidadeIngressosPossiveis(Integer idSala) {
        Sala sala = buscarSala(idSala);
        view.jComboBoxQtdIngressosVendidos.removeAllItems();
        for (int i = 0; i <= sala.getCapacidade(); i++) {
            view.jComboBoxQtdIngressosVendidos.addItem(i);
        }
    }
}
